
/*结构体
// 用户自定义的数据类型，允许用于存储不同的数据类型
// 三种定义方式：
struct 类型名称{成员列表}
函数参数：
值传递 函数中改变值，不会影响其他地方值
地址传递 函数中改变值，会同步改变其他地方值

结构体数组
*/
#include <stdio.h>
#include <iostream>
#include <string>
#include <ctime>
// #include <math.h>
using namespace std;
struct Student
{
    string name;
    int score;
};
struct Teacher
{
    string name;
    Student sArray[5];
};
void allocateSpace(struct Teacher tArray[], int len)
{
    string tName = "教师";
    string sName = "学生";
    string nameSeed = "ABCDE";
    for (int i = 0; i < len; i++)
    {
        tArray[i].name = tName + nameSeed[i];
        for (int j = 0; j < 5; j++)
        {
            int random = rand() % 61 + 40;
            tArray[i].sArray[j].name = sName + nameSeed[j];
            tArray[i].sArray[j].score = random;
        }
    }
}
void printTeachers(Teacher tArray[], int len)
{
    for (int i = 0; i < len; i++)
    {
        cout << tArray[i].name << endl;
        for (int j = 0; j < 5; j++)
        {
            cout << "\t姓名：" << tArray[i].sArray[j].name << " 分数：" << tArray[i].sArray[j].score << endl;
        }
    }
}

int main()
{
    // 随机数种子 头文件 #include <ctime>
    srand((unsigned int)time(NULL));
    struct Teacher tArray[3];
    int len = sizeof(tArray) / sizeof(tArray[0]);
    allocateSpace(tArray, len);
    printTeachers(tArray, len);
}